/**
 * mongoose 简单操作
 *
 * 1. 项目中，你得先安装 mongoose
 *    npm install mongoose
 *    yarn add mongoose
 *
 * 2. 引入 mongoose
 *
 * 2.1 连接数据库
 *
 * 3. 创建 schema 模式
 *
 * 4. 基于 schema 创建 Model 类（构造函数）
 *
 * 5. 基于 Model 生成 Document
 *
 * 6. 使用 Document 的 save 方法，写入到数据库中
 *
 */

const mongoose = require("mongoose");

// 建立数据库的连接
mongoose
  .connect("mongodb://localhost:27017/test")
  .then(() => {
    console.log("数据库连接成功");

    // 创建模式结构 post 帖子
    const schema = new mongoose.Schema({
      title: String,
      author: String,
      body: {
        type: String,
        required: true, // 必须传递
      },
      comments: [
        // 数组格式
        {
          body: String,
          date: Date,
        },
      ],
      date: {
        type: Date,
        default: Date.now, // 默认值
      },
    });

    // 创建 Model mongoose.model(modelName, schema, collectionName);
    //      modelName - 模型名字，如果 collectionName 没有传递的话，会使用 modelName 的 复数、小写 形式作为集合的名字
    //      schema    - 模式，约束
    //      collectionName   - 集合名字
    const Model = mongoose.model("Post", schema, "poaa");

    // new Model 创建 实例 --- document
    // const doc = new Model({
    //   title: "2022-08-18",
    //   author: "李狗蛋",
    //   body: "今天天气很好",
    // });

    // console.log(doc);

    // // 使用 save 方法，写入到数据库中，save返回的是一个 promise
    // doc
    //   .save()
    //   .then(() => {
    //     console.log("写入成功");
    //   })
    //   .catch(() => {
    //     console.log("写入失败");
    //   });

    // 第2中写入数据的方式 Model.create()
    Model.create({
      title: "world",
      author: "李狗蛋",
      // body: "123123123123",
    })
      .then(() => {
        console.log("创建并写入成功");
      })
      .catch((error) => {
        console.log("create失败", error);
      });
  })
  .catch((error) => {
    console.log("数据库连接失败", error);
  });
